import {ref} from 'vue'
import { router, addRoutes } from './index'
import { getToken } from '@/composables/auth'
import { msgWarning, showFullLoading, hideFullLoading } from '@/composables/util'
import { defineStore, storeToRefs } from 'pinia'  //pinia
import { storeData } from '@/store'  //pinia
import { getInfo } from '@/services/manager'  //api

//==========================================全局前置守卫===================================

//  getInfo().then(res => {
//       console.log('传入参数', res.data.data.menus)
//       addRoutes(res.data.data.menus)  //添加路由
//       // console.log('hasNewRoutes',hasNewRoutes)    //是否 有新路由
//     })
// console.log('传入路由',counter.userinfo?.menus);  //存入的数据
    
//   hasNewRoutes = addRoutes(counter.userinfo?.menus)  // 添加路由
//   console.log('hasNewRoutes',hasNewRoutes)    //是否 有新路由

router.beforeEach((to, from, next) => {

  // pinia的数据的调用
  const counter = storeData()
  
  showFullLoading()  // 显示loading
  
  const token = getToken()  // 获取用户登录的 token

  if(!token && to.path != '/login' ){
    msgWarning('请先登录')
    return next({path: '/login'})
  }
  if(token && to.path == '/login'){
    msgWarning('请勿重复登录')
    return next({path: from.path ? from.path : '/'})
  }

  let hasNewRoutes:Boolean = false
  let has
  if(token){
    // 如果用户登录了，自动获取用户信息，并存储在pinia中  动态添加路由

    // console.log('当前路由：',router.getRoutes());    //当前路由
    // const currRoutes = router.getRoutes();
    // has = currRoutes.some(item => item.path == to.path)
    // console.log('has：',has)

    // console.log('传入路由',counter.userinfo?.menus);  //存入的数据
    
    // hasNewRoutes = addRoutes(counter.userinfo?.menus)  // 添加路由
     
    // console.log('hasNewRoutes',hasNewRoutes)    //是否 有新路由

    // getInfo().then(res => {
    //   console.log('传入参数', res.data.data.menus)
    //   hasNewRoutes = addRoutes(res.data.data.menus)  //添加路由
    //   console.log('hasNewRoutes',hasNewRoutes)    //是否 有新路由
    // })

    // if(hasNewRoutes == true){
    //   return next(to.fullPath)
    // }
  }
  document.title = to.meta.title ? to.meta.title : '后台管理系统'  // 设置页面标题
  // console.log('to',to);    //to 对象包含的参数
  // console.log('from',from);    //from 对象包含的参数

  // hasNewRoutes ? next(to.fullPath) : next()  
  // !has ? next(to.fullPath) : next()
  next()
})

//==========================================全局 后置 守卫===================================

router.afterEach((to, from) => {
  hideFullLoading()
})